package cn.cangfei.massage.service;

import cn.cangfei.massage.dto.param.MassageSpecialParam;
import cn.cangfei.massage.entity.MassageOutpatient;
import cn.cangfei.massage.entity.MassageSpecial;

import java.util.List;
import java.util.Optional;

/**
 * @author Lemon  2313812755@qq.com
 * @date 2023/2/5
 */

public interface IMassageSpecialService {

    /**
     * 添加专科信息
     *
     * @param param 专科信息参数
     * @return 是否成功
     */
    boolean insert(MassageSpecialParam param);

    /**
     * 更新专科信息
     *
     * @param id    专科编号
     * @param param 专科信息参数
     * @return 是否成功
     */
    boolean update(Long id, MassageSpecialParam param);

    /**
     * 删除专科信息
     *
     * @param id 专科编号
     * @return 是否成功
     */
    boolean delete(Long id);

    /**
     * 获取专科信息
     *
     * @param id 专科编号
     * @return 专科信息
     */
    Optional<MassageSpecial> getOptional(Long id);

    /**
     * 获取专科名称
     *
     * @param id 专科编号
     * @return 专科名称
     */
    String getName(Long id);

    /**
     * 判断专科信息是否存在
     *
     * @param id 专科信息
     * @return 是否存在
     */
    boolean count(Long id);

    /**
     * 判断专科信息是否存在
     *
     * @param name 专科名称
     * @return 是否存在
     */
    boolean count(String name);


    /**
     * 通过专科编号，查找推拿馆门诊列表
     *
     * @param specialId 专科编号
     * @param pageNum   第几页
     * @param pageSize  页大小
     * @return 门诊列表
     */
    List<MassageOutpatient> listOutpatient(Long specialId, Integer pageNum, Integer pageSize);

    /**
     * 查找专科信息
     *
     * @param name     专科名称
     * @param pageNum  第几页
     * @param pageSize 页大小
     * @return 专科列表
     */
    List<MassageSpecial> list(String name, Integer pageNum, Integer pageSize);

    /**
     * 查找推拿馆，所属专科信息
     *
     * @param massageId 推拿馆编号
     * @param pageNum    第几页
     * @param pageSize   页大小
     * @return 专科列表
     */
    List<MassageSpecial> list(Long massageId, Integer pageNum, Integer pageSize);

    // 根据姓名获取id
    Long getIdByName(String name);

    /**
     * 查找推拿馆，所属专科信息不分页
     *
     * @param massageId 推拿馆编号
     * @return 专科列表
     */
    List<MassageSpecial> list(Long massageId);
}
